package common

import (
	"gpt-api/framework/ginplus"
	"gpt-api/pkg/model"
	"gpt-api/pkg/response"

	"github.com/gin-gonic/gin"
)

// 获取省份列表
func (h *Handler) GetProvinceList(c *gin.Context) error {
	provinceList, err := (&model.Province{}).GetProvinceAll(h.db)
	if err != nil {
		return err
	}
	// 整理返回数据
	var resp []*response.AreaResp
	for _, v := range provinceList {
		resp = append(resp, &response.AreaResp{
			Code: v.Code,
			Name: v.Name,
		})
	}
	return ginplus.ReplyJSON(c, resp)

}

// 获取城市列表
func (h *Handler) GetCityList(c *gin.Context) error {
	// 验证参数
	var req struct {
		Code string `form:"code" binding:"required"`
	}
	if err := c.Bind(&req); err != nil {
		return ginplus.ReplyBadRequest(c, err)
	}

	// 查询城市列表
	cityList, err := (&model.City{}).GetCityByProvinceCode(h.db, req.Code)
	if err != nil {
		return err
	}

	// 整理返回数据
	var resp []*response.AreaResp
	for _, v := range cityList {
		resp = append(resp, &response.AreaResp{
			Code: v.Code,
			Name: v.Name,
		})
	}
	return ginplus.ReplyJSON(c, resp)
}

// 获取地区列表
func (h *Handler) GetAreaList(c *gin.Context) error {
	// 验证参数
	var req struct {
		Code string `form:"code" binding:"required"`
	}
	if err := c.Bind(&req); err != nil {
		return ginplus.ReplyBadRequest(c, err)
	}

	// 查询地区列表
	areaList, err := (&model.Area{}).GetAreaByCityCode(h.db, req.Code)
	if err != nil {
		return err
	}

	// 整理返回数据
	var resp []*response.AreaResp
	for _, v := range areaList {
		resp = append(resp, &response.AreaResp{
			Code: v.Code,
			Name: v.Name,
		})
	}
	return ginplus.ReplyJSON(c, resp)
}
